import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm
import numpy as np
from IPython.display import display, Math, Latex
import pylab
import itertools
import plot_methods
import optimization_methods
%matplotlib inline
import warnings
warnings.filterwarnings('ignore')
my_function = lambda x, y, z: 16*x**2 + 15*y**2 + 2*z**2 + 0.018*x*y + x-z
result = optimization_methods.conjucate_gradients_method(func=my_function, params=[1,1,1], eps=1e-5)
plot_methods.plot_implicit(fn=my_function, bbox=(-0.01, 0.01))
func = lambda x, y: x**2 + 4*y**2 + 0.001*x*y - y
plot_methods.plot_function([func], 'Quadratic function')
res = optimization_methods.conjucate_gradients_method(func, [0,1], 1e-5)